// Knockout JavaScript library v2.1.0
// (c) Steven Sanderson - http://knockoutjs.com/
// License: MIT (http://www.opensource.org/licenses/mit-license.php)

(function (window, document, navigator, undefined) {
    function m(w) { throw w; } var n = void 0, p = !0, s = null, t = !1; function A(w) { return function () { return w } }; function E(w) {
        function B(b, c, d) { d && c !== a.k.r(b) && a.k.S(b, c); c !== a.k.r(b) && a.a.va(b, "change") } var a = "undefined" !== typeof w ? w : {}; a.b = function (b, c) { for (var d = b.split("."), f = a, g = 0; g < d.length - 1; g++) f = f[d[g]]; f[d[d.length - 1]] = c }; a.B = function (a, c, d) { a[c] = d }; a.version = "2.1.0"; a.b("version", a.version); a.a = new function () {
            function b(b, c) { if ("input" !== a.a.o(b) || !b.type || "click" != c.toLowerCase()) return t; var e = b.type; return "checkbox" == e || "radio" == e } var c = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, d = {}, f = {}; d[/Firefox\/2/i.test(navigator.userAgent) ?
"KeyboardEvent" : "UIEvents"] = ["keyup", "keydown", "keypress"]; d.MouseEvents = "click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "); for (var g in d) { var e = d[g]; if (e.length) for (var h = 0, j = e.length; h < j; h++) f[e[h]] = g } var k = { propertychange: p }, i = function () { for (var a = 3, b = document.createElement("div"), c = b.getElementsByTagName("i"); b.innerHTML = "<\!--[if gt IE " + ++a + "]><i></i><![endif]--\>", c[0]; ); return 4 < a ? a : n } (); return { Ca: ["authenticity_token", /^__RequestVerificationToken(_.*)?$/],
    v: function (a, b) { for (var c = 0, e = a.length; c < e; c++) b(a[c]) }, j: function (a, b) { if ("function" == typeof Array.prototype.indexOf) return Array.prototype.indexOf.call(a, b); for (var c = 0, e = a.length; c < e; c++) if (a[c] === b) return c; return -1 }, ab: function (a, b, c) { for (var e = 0, f = a.length; e < f; e++) if (b.call(c, a[e])) return a[e]; return s }, ba: function (b, c) { var e = a.a.j(b, c); 0 <= e && b.splice(e, 1) }, za: function (b) { for (var b = b || [], c = [], e = 0, f = b.length; e < f; e++) 0 > a.a.j(c, b[e]) && c.push(b[e]); return c }, T: function (a, b) {
        for (var a = a || [], c = [],
e = 0, f = a.length; e < f; e++) c.push(b(a[e])); return c
    }, aa: function (a, b) { for (var a = a || [], c = [], e = 0, f = a.length; e < f; e++) b(a[e]) && c.push(a[e]); return c }, N: function (a, b) { if (b instanceof Array) a.push.apply(a, b); else for (var c = 0, e = b.length; c < e; c++) a.push(b[c]); return a }, extend: function (a, b) { if (b) for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c]); return a }, ga: function (b) { for (; b.firstChild; ) a.removeNode(b.firstChild) }, Ab: function (b) {
        for (var b = a.a.L(b), c = document.createElement("div"), e = 0, f = b.length; e < f; e++) a.F(b[e]),
c.appendChild(b[e]); return c
    }, X: function (b, c) { a.a.ga(b); if (c) for (var e = 0, f = c.length; e < f; e++) b.appendChild(c[e]) }, Na: function (b, c) { var e = b.nodeType ? [b] : b; if (0 < e.length) { for (var f = e[0], d = f.parentNode, g = 0, h = c.length; g < h; g++) d.insertBefore(c[g], f); g = 0; for (h = e.length; g < h; g++) a.removeNode(e[g]) } }, Pa: function (a, b) { 0 <= navigator.userAgent.indexOf("MSIE 6") ? a.setAttribute("selected", b) : a.selected = b }, w: function (a) { return (a || "").replace(c, "") }, Ib: function (b, c) {
        for (var e = [], f = (b || "").split(c), g = 0, d = f.length; g <
d; g++) { var h = a.a.w(f[g]); "" !== h && e.push(h) } return e
    }, Hb: function (a, b) { a = a || ""; return b.length > a.length ? t : a.substring(0, b.length) === b }, eb: function (a, b) { for (var c = "return (" + a + ")", e = 0; e < b; e++) c = "with(sc[" + e + "]) { " + c + " } "; return new Function("sc", c) }, kb: function (a, b) { if (b.compareDocumentPosition) return 16 == (b.compareDocumentPosition(a) & 16); for (; a != s; ) { if (a == b) return p; a = a.parentNode } return t }, fa: function (b) { return a.a.kb(b, b.ownerDocument) }, o: function (a) { return a && a.tagName && a.tagName.toLowerCase() },
    n: function (a, c, e) { var f = i && k[c]; if (!f && "undefined" != typeof jQuery) { if (b(a, c)) var g = e, e = function (a, b) { var c = this.checked; b && (this.checked = b.fb !== p); g.call(this, a); this.checked = c }; jQuery(a).bind(c, e) } else !f && "function" == typeof a.addEventListener ? a.addEventListener(c, e, t) : "undefined" != typeof a.attachEvent ? a.attachEvent("on" + c, function (b) { e.call(a, b) }) : m(Error("Browser doesn't support addEventListener or attachEvent")) }, va: function (a, c) {
        (!a || !a.nodeType) && m(Error("element must be a DOM node when calling triggerEvent"));
        if ("undefined" != typeof jQuery) { var e = []; b(a, c) && e.push({ fb: a.checked }); jQuery(a).trigger(c, e) } else "function" == typeof document.createEvent ? "function" == typeof a.dispatchEvent ? (e = document.createEvent(f[c] || "HTMLEvents"), e.initEvent(c, p, p, window, 0, 0, 0, 0, 0, t, t, t, t, 0, a), a.dispatchEvent(e)) : m(Error("The supplied element doesn't support dispatchEvent")) : "undefined" != typeof a.fireEvent ? (b(a, c) && (a.checked = a.checked !== p), a.fireEvent("on" + c)) : m(Error("Browser doesn't support triggering events"))
    }, d: function (b) {
        return a.la(b) ?
b() : b
    }, Ua: function (b, c, e) { var f = (b.className || "").split(/\s+/), g = 0 <= a.a.j(f, c); if (e && !g) b.className += (f[0] ? " " : "") + c; else if (g && !e) { e = ""; for (g = 0; g < f.length; g++) f[g] != c && (e += f[g] + " "); b.className = a.a.w(e) } }, Qa: function (b, c) { var e = a.a.d(c); if (e === s || e === n) e = ""; "innerText" in b ? b.innerText = e : b.textContent = e; 9 <= i && (b.style.display = b.style.display) }, lb: function (a) { if (9 <= i) { var b = a.style.width; a.style.width = 0; a.style.width = b } }, Eb: function (b, e) { for (var b = a.a.d(b), e = a.a.d(e), c = [], f = b; f <= e; f++) c.push(f); return c },
    L: function (a) { for (var b = [], e = 0, c = a.length; e < c; e++) b.push(a[e]); return b }, tb: 6 === i, ub: 7 === i, ja: i, Da: function (b, e) { for (var c = a.a.L(b.getElementsByTagName("input")).concat(a.a.L(b.getElementsByTagName("textarea"))), f = "string" == typeof e ? function (a) { return a.name === e } : function (a) { return e.test(a.name) }, g = [], d = c.length - 1; 0 <= d; d--) f(c[d]) && g.push(c[d]); return g }, Bb: function (b) { return "string" == typeof b && (b = a.a.w(b)) ? window.JSON && window.JSON.parse ? window.JSON.parse(b) : (new Function("return " + b))() : s }, sa: function (b,
e, c) { ("undefined" == typeof JSON || "undefined" == typeof JSON.stringify) && m(Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js")); return JSON.stringify(a.a.d(b), e, c) }, Cb: function (b, e, c) {
    var c = c || {}, f = c.params || {}, g = c.includeFields || this.Ca, d = b; if ("object" == typeof b && "form" === a.a.o(b)) for (var d = b.action, h = g.length - 1; 0 <= h; h--) for (var k = a.a.Da(b, g[h]),
j = k.length - 1; 0 <= j; j--) f[k[j].name] = k[j].value; var e = a.a.d(e), i = document.createElement("form"); i.style.display = "none"; i.action = d; i.method = "post"; for (var z in e) b = document.createElement("input"), b.name = z, b.value = a.a.sa(a.a.d(e[z])), i.appendChild(b); for (z in f) b = document.createElement("input"), b.name = z, b.value = f[z], i.appendChild(b); document.body.appendChild(i); c.submitter ? c.submitter(i) : i.submit(); setTimeout(function () { i.parentNode.removeChild(i) }, 0)
} 
}
        }; a.b("utils", a.a); a.b("utils.arrayForEach", a.a.v);
        a.b("utils.arrayFirst", a.a.ab); a.b("utils.arrayFilter", a.a.aa); a.b("utils.arrayGetDistinctValues", a.a.za); a.b("utils.arrayIndexOf", a.a.j); a.b("utils.arrayMap", a.a.T); a.b("utils.arrayPushAll", a.a.N); a.b("utils.arrayRemoveItem", a.a.ba); a.b("utils.extend", a.a.extend); a.b("utils.fieldsIncludedWithJsonPost", a.a.Ca); a.b("utils.getFormFields", a.a.Da); a.b("utils.postJson", a.a.Cb); a.b("utils.parseJson", a.a.Bb); a.b("utils.registerEventHandler", a.a.n); a.b("utils.stringifyJson", a.a.sa); a.b("utils.range", a.a.Eb);
        a.b("utils.toggleDomNodeCssClass", a.a.Ua); a.b("utils.triggerEvent", a.a.va); a.b("utils.unwrapObservable", a.a.d); Function.prototype.bind || (Function.prototype.bind = function (a) { var c = this, d = Array.prototype.slice.call(arguments), a = d.shift(); return function () { return c.apply(a, d.concat(Array.prototype.slice.call(arguments))) } }); a.a.f = new function () {
            var b = 0, c = "__ko__" + (new Date).getTime(), d = {}; return { get: function (b, c) { var e = a.a.f.getAll(b, t); return e === n ? n : e[c] }, set: function (b, c, e) {
                e === n && a.a.f.getAll(b,
t) === n || (a.a.f.getAll(b, p)[c] = e)
            }, getAll: function (a, g) { var e = a[c]; if (!(e && "null" !== e)) { if (!g) return; e = a[c] = "ko" + b++; d[e] = {} } return d[e] }, clear: function (a) { var b = a[c]; b && (delete d[b], a[c] = s) } 
            }
        }; a.b("utils.domData", a.a.f); a.b("utils.domData.clear", a.a.f.clear); a.a.G = new function () {
            function b(b, c) { var f = a.a.f.get(b, d); f === n && c && (f = [], a.a.f.set(b, d, f)); return f } function c(e) {
                var f = b(e, t); if (f) for (var f = f.slice(0), d = 0; d < f.length; d++) f[d](e); a.a.f.clear(e); "function" == typeof jQuery && "function" == typeof jQuery.cleanData &&
jQuery.cleanData([e]); if (g[e.nodeType]) for (f = e.firstChild; e = f; ) f = e.nextSibling, 8 === e.nodeType && c(e)
            } var d = "__ko_domNodeDisposal__" + (new Date).getTime(), f = { 1: p, 8: p, 9: p }, g = { 1: p, 9: p }; return { wa: function (a, c) { "function" != typeof c && m(Error("Callback must be a function")); b(a, p).push(c) }, Ma: function (c, f) { var g = b(c, t); g && (a.a.ba(g, f), 0 == g.length && a.a.f.set(c, d, n)) }, F: function (b) { if (f[b.nodeType] && (c(b), g[b.nodeType])) { var d = []; a.a.N(d, b.getElementsByTagName("*")); for (var b = 0, j = d.length; b < j; b++) c(d[b]) } },
                removeNode: function (b) { a.F(b); b.parentNode && b.parentNode.removeChild(b) } 
            }
        }; a.F = a.a.G.F; a.removeNode = a.a.G.removeNode; a.b("cleanNode", a.F); a.b("removeNode", a.removeNode); a.b("utils.domNodeDisposal", a.a.G); a.b("utils.domNodeDisposal.addDisposeCallback", a.a.G.wa); a.b("utils.domNodeDisposal.removeDisposeCallback", a.a.G.Ma); (function () {
            a.a.pa = function (b) {
                var c; if ("undefined" != typeof jQuery) {
                    if ((c = jQuery.clean([b])) && c[0]) {
                        for (b = c[0]; b.parentNode && 11 !== b.parentNode.nodeType; ) b = b.parentNode; b.parentNode &&
b.parentNode.removeChild(b)
                    } 
                } else { var d = a.a.w(b).toLowerCase(); c = document.createElement("div"); d = d.match(/^<(thead|tbody|tfoot)/) && [1, "<table>", "</table>"] || !d.indexOf("<tr") && [2, "<table><tbody>", "</tbody></table>"] || (!d.indexOf("<td") || !d.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || [0, "", ""]; b = "ignored<div>" + d[1] + b + d[2] + "</div>"; for ("function" == typeof window.innerShiv ? c.appendChild(window.innerShiv(b)) : c.innerHTML = b; d[0]--; ) c = c.lastChild; c = a.a.L(c.lastChild.childNodes) } return c
            };
            a.a.Y = function (b, c) { a.a.ga(b); if (c !== s && c !== n) if ("string" != typeof c && (c = c.toString()), "undefined" != typeof jQuery) jQuery(b).html(c); else for (var d = a.a.pa(c), f = 0; f < d.length; f++) b.appendChild(d[f]) } 
        })(); a.b("utils.parseHtmlFragment", a.a.pa); a.b("utils.setHtml", a.a.Y); a.s = function () {
            function b() { return (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1) } function c(b, g) {
                if (b) if (8 == b.nodeType) { var e = a.s.Ja(b.nodeValue); e != s && g.push({ jb: b, yb: e }) } else if (1 == b.nodeType) for (var e = 0, d = b.childNodes, j = d.length; e <
j; e++) c(d[e], g)
            } var d = {}; return { na: function (a) { "function" != typeof a && m(Error("You can only pass a function to ko.memoization.memoize()")); var c = b() + b(); d[c] = a; return "<\!--[ko_memo:" + c + "]--\>" }, Va: function (a, b) { var c = d[a]; c === n && m(Error("Couldn't find any memo with ID " + a + ". Perhaps it's already been unmemoized.")); try { return c.apply(s, b || []), p } finally { delete d[a] } }, Wa: function (b, d) {
                var e = []; c(b, e); for (var h = 0, j = e.length; h < j; h++) {
                    var k = e[h].jb, i = [k]; d && a.a.N(i, d); a.s.Va(e[h].yb, i); k.nodeValue = ""; k.parentNode &&
k.parentNode.removeChild(k)
                } 
            }, Ja: function (a) { return (a = a.match(/^\[ko_memo\:(.*?)\]$/)) ? a[1] : s } 
            }
        } (); a.b("memoization", a.s); a.b("memoization.memoize", a.s.na); a.b("memoization.unmemoize", a.s.Va); a.b("memoization.parseMemoText", a.s.Ja); a.b("memoization.unmemoizeDomNodeAndDescendants", a.s.Wa); a.Ba = { throttle: function (b, c) { b.throttleEvaluation = c; var d = s; return a.h({ read: b, write: function (a) { clearTimeout(d); d = setTimeout(function () { b(a) }, c) } }) }, notify: function (b, c) {
            b.equalityComparer = "always" == c ? A(t) : a.m.fn.equalityComparer;
            return b
        } 
        }; a.b("extenders", a.Ba); a.Sa = function (b, c, d) { this.target = b; this.ca = c; this.ib = d; a.B(this, "dispose", this.A) }; a.Sa.prototype.A = function () { this.sb = p; this.ib() }; a.R = function () { this.u = {}; a.a.extend(this, a.R.fn); a.B(this, "subscribe", this.ta); a.B(this, "extend", this.extend); a.B(this, "getSubscriptionsCount", this.ob) }; a.R.fn = { ta: function (b, c, d) { var d = d || "change", b = c ? b.bind(c) : b, f = new a.Sa(this, b, function () { a.a.ba(this.u[d], f) } .bind(this)); this.u[d] || (this.u[d] = []); this.u[d].push(f); return f }, notifySubscribers: function (b,
c) { c = c || "change"; this.u[c] && a.a.v(this.u[c].slice(0), function (a) { a && a.sb !== p && a.ca(b) }) }, ob: function () { var a = 0, c; for (c in this.u) this.u.hasOwnProperty(c) && (a += this.u[c].length); return a }, extend: function (b) { var c = this; if (b) for (var d in b) { var f = a.Ba[d]; "function" == typeof f && (c = f(c, b[d])) } return c } 
        }; a.Ga = function (a) { return "function" == typeof a.ta && "function" == typeof a.notifySubscribers }; a.b("subscribable", a.R); a.b("isSubscribable", a.Ga); a.U = function () {
            var b = []; return { bb: function (a) { b.push({ ca: a, Aa: [] }) },
                end: function () { b.pop() }, La: function (c) { a.Ga(c) || m(Error("Only subscribable things can act as dependencies")); if (0 < b.length) { var d = b[b.length - 1]; 0 <= a.a.j(d.Aa, c) || (d.Aa.push(c), d.ca(c)) } } 
            }
        } (); var G = { undefined: p, "boolean": p, number: p, string: p }; a.m = function (b) {
            function c() { if (0 < arguments.length) { if (!c.equalityComparer || !c.equalityComparer(d, arguments[0])) c.I(), d = arguments[0], c.H(); return this } a.U.La(c); return d } var d = b; a.R.call(c); c.H = function () { c.notifySubscribers(d) }; c.I = function () {
                c.notifySubscribers(d,
"beforeChange")
            }; a.a.extend(c, a.m.fn); a.B(c, "valueHasMutated", c.H); a.B(c, "valueWillMutate", c.I); return c
        }; a.m.fn = { equalityComparer: function (a, c) { return a === s || typeof a in G ? a === c : t } }; var x = a.m.Db = "__ko_proto__"; a.m.fn[x] = a.m; a.ia = function (b, c) { return b === s || b === n || b[x] === n ? t : b[x] === c ? p : a.ia(b[x], c) }; a.la = function (b) { return a.ia(b, a.m) }; a.Ha = function (b) { return "function" == typeof b && b[x] === a.m || "function" == typeof b && b[x] === a.h && b.pb ? p : t }; a.b("observable", a.m); a.b("isObservable", a.la); a.b("isWriteableObservable",
a.Ha); a.Q = function (b) { 0 == arguments.length && (b = []); b !== s && (b !== n && !("length" in b)) && m(Error("The argument passed when initializing an observable array must be an array, or null, or undefined.")); var c = a.m(b); a.a.extend(c, a.Q.fn); return c }; a.Q.fn = { remove: function (a) { for (var c = this(), d = [], f = "function" == typeof a ? a : function (c) { return c === a }, g = 0; g < c.length; g++) { var e = c[g]; f(e) && (0 === d.length && this.I(), d.push(e), c.splice(g, 1), g--) } d.length && this.H(); return d }, removeAll: function (b) {
    if (b === n) {
        var c = this(),
d = c.slice(0); this.I(); c.splice(0, c.length); this.H(); return d
    } return !b ? [] : this.remove(function (c) { return 0 <= a.a.j(b, c) })
}, destroy: function (a) { var c = this(), d = "function" == typeof a ? a : function (c) { return c === a }; this.I(); for (var f = c.length - 1; 0 <= f; f--) d(c[f]) && (c[f]._destroy = p); this.H() }, destroyAll: function (b) { return b === n ? this.destroy(A(p)) : !b ? [] : this.destroy(function (c) { return 0 <= a.a.j(b, c) }) }, indexOf: function (b) { var c = this(); return a.a.j(c, b) }, replace: function (a, c) {
    var d = this.indexOf(a); 0 <= d && (this.I(),
this()[d] = c, this.H())
} 
}; a.a.v("pop push reverse shift sort splice unshift".split(" "), function (b) { a.Q.fn[b] = function () { var a = this(); this.I(); a = a[b].apply(a, arguments); this.H(); return a } }); a.a.v(["slice"], function (b) { a.Q.fn[b] = function () { var a = this(); return a[b].apply(a, arguments) } }); a.b("observableArray", a.Q); a.h = function (b, c, d) {
    function f() { a.a.v(v, function (a) { a.A() }); v = [] } function g() { var a = h.throttleEvaluation; a && 0 <= a ? (clearTimeout(x), x = setTimeout(e, a)) : e() } function e() {
        if (!l) if (i && w()) u(); else {
            l =
p; try { var b = a.a.T(v, function (a) { return a.target }); a.U.bb(function (c) { var e; 0 <= (e = a.a.j(b, c)) ? b[e] = n : v.push(c.ta(g)) }); for (var e = q.call(c), f = b.length - 1; 0 <= f; f--) b[f] && v.splice(f, 1)[0].A(); i = p; h.notifySubscribers(k, "beforeChange"); k = e } finally { a.U.end() } h.notifySubscribers(k); l = t
        } 
    } function h() { if (0 < arguments.length) j.apply(h, arguments); else return i || e(), a.U.La(h), k } function j() { "function" === typeof o ? o.apply(c, arguments) : m(Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.")) }
    var k, i = t, l = t, q = b; q && "object" == typeof q ? (d = q, q = d.read) : (d = d || {}, q || (q = d.read)); "function" != typeof q && m(Error("Pass a function that returns the value of the ko.computed")); var o = d.write; c || (c = d.owner); var v = [], u = f, r = "object" == typeof d.disposeWhenNodeIsRemoved ? d.disposeWhenNodeIsRemoved : s, w = d.disposeWhen || A(t); if (r) { u = function () { a.a.G.Ma(r, arguments.callee); f() }; a.a.G.wa(r, u); var y = w, w = function () { return !a.a.fa(r) || y() } } var x = s; h.nb = function () { return v.length }; h.pb = "function" === typeof d.write; h.A = function () { u() };
    a.R.call(h); a.a.extend(h, a.h.fn); d.deferEvaluation !== p && e(); a.B(h, "dispose", h.A); a.B(h, "getDependenciesCount", h.nb); return h
}; a.rb = function (b) { return a.ia(b, a.h) }; w = a.m.Db; a.h[w] = a.m; a.h.fn = {}; a.h.fn[w] = a.h; a.b("dependentObservable", a.h); a.b("computed", a.h); a.b("isComputed", a.rb); (function () {
    function b(a, g, e) {
        e = e || new d; a = g(a); if (!("object" == typeof a && a !== s && a !== n && !(a instanceof Date))) return a; var h = a instanceof Array ? [] : {}; e.save(a, h); c(a, function (c) {
            var d = g(a[c]); switch (typeof d) {
                case "boolean": case "number": case "string": case "function": h[c] =
d; break; case "object": case "undefined": var i = e.get(d); h[c] = i !== n ? i : b(d, g, e)
            } 
        }); return h
    } function c(a, b) { if (a instanceof Array) { for (var c = 0; c < a.length; c++) b(c); "function" == typeof a.toJSON && b("toJSON") } else for (c in a) b(c) } function d() { var b = [], c = []; this.save = function (e, d) { var j = a.a.j(b, e); 0 <= j ? c[j] = d : (b.push(e), c.push(d)) }; this.get = function (e) { e = a.a.j(b, e); return 0 <= e ? c[e] : n } } a.Ta = function (c) {
        0 == arguments.length && m(Error("When calling ko.toJS, pass the object you want to convert.")); return b(c, function (b) {
            for (var c =
0; a.la(b) && 10 > c; c++) b = b(); return b
        })
    }; a.toJSON = function (b, c, e) { b = a.Ta(b); return a.a.sa(b, c, e) } 
})(); a.b("toJS", a.Ta); a.b("toJSON", a.toJSON); (function () {
    a.k = { r: function (b) { switch (a.a.o(b)) { case "option": return b.__ko__hasDomDataOptionValue__ === p ? a.a.f.get(b, a.c.options.oa) : b.getAttribute("value"); case "select": return 0 <= b.selectedIndex ? a.k.r(b.options[b.selectedIndex]) : n; default: return b.value } }, S: function (b, c) {
        switch (a.a.o(b)) {
            case "option": switch (typeof c) {
                    case "string": a.a.f.set(b, a.c.options.oa,
n); "__ko__hasDomDataOptionValue__" in b && delete b.__ko__hasDomDataOptionValue__; b.value = c; break; default: a.a.f.set(b, a.c.options.oa, c), b.__ko__hasDomDataOptionValue__ = p, b.value = "number" === typeof c ? c : ""
                } break; case "select": for (var d = b.options.length - 1; 0 <= d; d--) if (a.k.r(b.options[d]) == c) { b.selectedIndex = d; break } break; default: if (c === s || c === n) c = ""; b.value = c
        } 
    } 
    }
})(); a.b("selectExtensions", a.k); a.b("selectExtensions.readValue", a.k.r); a.b("selectExtensions.writeValue", a.k.S); a.g = function () {
    function b(a, b) {
        for (var d =
s; a != d; ) d = a, a = a.replace(c, function (a, c) { return b[c] }); return a
    } var c = /\@ko_token_(\d+)\@/g, d = /^[\_$a-z][\_$a-z0-9]*(\[.*?\])*(\.[\_$a-z][\_$a-z0-9]*(\[.*?\])*)*$/i, f = ["true", "false"]; return { D: [], W: function (c) {
        var e = a.a.w(c); if (3 > e.length) return []; "{" === e.charAt(0) && (e = e.substring(1, e.length - 1)); for (var c = [], d = s, f, k = 0; k < e.length; k++) {
            var i = e.charAt(k); if (d === s) switch (i) { case '"': case "'": case "/": d = k, f = i } else if (i == f && "\\" !== e.charAt(k - 1)) {
                i = e.substring(d, k + 1); c.push(i); var l = "@ko_token_" + (c.length -
1) + "@", e = e.substring(0, d) + l + e.substring(k + 1), k = k - (i.length - l.length), d = s
            } 
        } f = d = s; for (var q = 0, o = s, k = 0; k < e.length; k++) { i = e.charAt(k); if (d === s) switch (i) { case "{": d = k; o = i; f = "}"; break; case "(": d = k; o = i; f = ")"; break; case "[": d = k, o = i, f = "]" } i === o ? q++ : i === f && (q--, 0 === q && (i = e.substring(d, k + 1), c.push(i), l = "@ko_token_" + (c.length - 1) + "@", e = e.substring(0, d) + l + e.substring(k + 1), k -= i.length - l.length, d = s)) } f = []; e = e.split(","); d = 0; for (k = e.length; d < k; d++) q = e[d], o = q.indexOf(":"), 0 < o && o < q.length - 1 ? (i = q.substring(o + 1), f.push({ key: b(q.substring(0,
o), c), value: b(i, c)
        })) : f.push({ unknown: b(q, c) }); return f
    }, ka: function (b) {
        for (var c = "string" === typeof b ? a.g.W(b) : b, h = [], b = [], j, k = 0; j = c[k]; k++) if (0 < h.length && h.push(","), j.key) { var i; a: { i = j.key; var l = a.a.w(i); switch (l.length && l.charAt(0)) { case "'": case '"': break a; default: i = "'" + l + "'" } } j = j.value; h.push(i); h.push(":"); h.push(j); l = a.a.w(j); if (0 <= a.a.j(f, a.a.w(l).toLowerCase()) ? 0 : l.match(d) !== s) 0 < b.length && b.push(", "), b.push(i + " : function(__ko_value) { " + j + " = __ko_value; }") } else j.unknown && h.push(j.unknown);
        c = h.join(""); 0 < b.length && (c = c + ", '_ko_property_writers' : { " + b.join("") + " } "); return c
    }, wb: function (b, c) { for (var d = 0; d < b.length; d++) if (a.a.w(b[d].key) == c) return p; return t }, $: function (b, c, d, f, k) { if (!b || !a.Ha(b)) { if ((b = c()._ko_property_writers) && b[d]) b[d](f) } else (!k || b() !== f) && b(f) } 
    }
} (); a.b("jsonExpressionRewriting", a.g); a.b("jsonExpressionRewriting.bindingRewriteValidators", a.g.D); a.b("jsonExpressionRewriting.parseObjectLiteral", a.g.W); a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",
a.g.ka); (function () {
    function b(a) { return 8 == a.nodeType && (g ? a.text : a.nodeValue).match(e) } function c(a) { return 8 == a.nodeType && (g ? a.text : a.nodeValue).match(h) } function d(a, e) { for (var d = a, f = 1, g = []; d = d.nextSibling; ) { if (c(d) && (f--, 0 === f)) return g; g.push(d); b(d) && f++ } e || m(Error("Cannot find closing comment tag to match: " + a.nodeValue)); return s } function f(a, b) { var c = d(a, b); return c ? 0 < c.length ? c[c.length - 1].nextSibling : a.nextSibling : s } var g = "<\!--test--\>" === document.createComment("test").text, e = g ? /^<\!--\s*ko\s+(.*\:.*)\s*--\>$/ :
/^\s*ko\s+(.*\:.*)\s*$/, h = g ? /^<\!--\s*\/ko\s*--\>$/ : /^\s*\/ko\s*$/, j = { ul: p, ol: p }; a.e = { C: {}, childNodes: function (a) { return b(a) ? d(a) : a.childNodes }, ha: function (c) { if (b(c)) for (var c = a.e.childNodes(c), e = 0, d = c.length; e < d; e++) a.removeNode(c[e]); else a.a.ga(c) }, X: function (c, e) { if (b(c)) { a.e.ha(c); for (var d = c.nextSibling, f = 0, g = e.length; f < g; f++) d.parentNode.insertBefore(e[f], d) } else a.a.X(c, e) }, Ka: function (a, c) { b(a) ? a.parentNode.insertBefore(c, a.nextSibling) : a.firstChild ? a.insertBefore(c, a.firstChild) : a.appendChild(c) },
    Fa: function (a, c, e) { b(a) ? a.parentNode.insertBefore(c, e.nextSibling) : e.nextSibling ? a.insertBefore(c, e.nextSibling) : a.appendChild(c) }, firstChild: function (a) { return !b(a) ? a.firstChild : !a.nextSibling || c(a.nextSibling) ? s : a.nextSibling }, nextSibling: function (a) { b(a) && (a = f(a)); return a.nextSibling && c(a.nextSibling) ? s : a.nextSibling }, Xa: function (a) { return (a = b(a)) ? a[1] : s }, Ia: function (e) {
        if (j[a.a.o(e)]) {
            var d = e.firstChild; if (d) {
                do if (1 === d.nodeType) {
                    var g; g = d.firstChild; var h = s; if (g) {
                        do if (h) h.push(g); else if (b(g)) {
                            var o =
f(g, p); o ? g = o : h = [g]
                        } else c(g) && (h = [g]); while (g = g.nextSibling)
                    } if (g = h) { h = d.nextSibling; for (o = 0; o < g.length; o++) h ? e.insertBefore(g[o], h) : e.appendChild(g[o]) } 
                } while (d = d.nextSibling)
            } 
        } 
    } 
}
})(); a.b("virtualElements", a.e); a.b("virtualElements.allowedBindings", a.e.C); a.b("virtualElements.emptyNode", a.e.ha); a.b("virtualElements.insertAfter", a.e.Fa); a.b("virtualElements.prepend", a.e.Ka); a.b("virtualElements.setDomNodeChildren", a.e.X); (function () {
    a.J = function () { this.cb = {} }; a.a.extend(a.J.prototype, { nodeHasBindings: function (b) {
        switch (b.nodeType) {
            case 1: return b.getAttribute("data-bind") !=
s; case 8: return a.e.Xa(b) != s; default: return t
        } 
    }, getBindings: function (a, c) { var d = this.getBindingsString(a, c); return d ? this.parseBindingsString(d, c) : s }, getBindingsString: function (b) { switch (b.nodeType) { case 1: return b.getAttribute("data-bind"); case 8: return a.e.Xa(b); default: return s } }, parseBindingsString: function (b, c) {
        try { var d = c.$data, d = "object" == typeof d && d != s ? [d, c] : [c], f = d.length, g = this.cb, e = f + "_" + b, h; if (!(h = g[e])) { var j = " { " + a.g.ka(b) + " } "; h = g[e] = a.a.eb(j, f) } return h(d) } catch (k) {
            m(Error("Unable to parse bindings.\nMessage: " +
k + ";\nBindings value: " + b))
        } 
    } 
    }); a.J.instance = new a.J
})(); a.b("bindingProvider", a.J); (function () {
    function b(b, d, e) { for (var h = a.e.firstChild(d); d = h; ) h = a.e.nextSibling(d), c(b, d, e) } function c(c, g, e) { var h = p, j = 1 === g.nodeType; j && a.e.Ia(g); if (j && e || a.J.instance.nodeHasBindings(g)) h = d(g, s, c, e).Gb; h && b(c, g, !j) } function d(b, c, e, d) {
        function j(a) { return function () { return l[a] } } function k() { return l } var i = 0, l, q; a.h(function () {
            var o = e && e instanceof a.z ? e : new a.z(a.a.d(e)), v = o.$data; d && a.Ra(b, o); if (l = ("function" ==
typeof c ? c() : c) || a.J.instance.getBindings(b, o)) {
                if (0 === i) { i = 1; for (var u in l) { var r = a.c[u]; r && 8 === b.nodeType && !a.e.C[u] && m(Error("The binding '" + u + "' cannot be used with virtual elements")); if (r && "function" == typeof r.init && (r = (0, r.init)(b, j(u), k, v, o)) && r.controlsDescendantBindings) q !== n && m(Error("Multiple bindings (" + q + " and " + u + ") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.")), q = u } i = 2 } if (2 === i) for (u in l) (r = a.c[u]) && "function" ==
typeof r.update && (0, r.update)(b, j(u), k, v, o)
            } 
        }, s, { disposeWhenNodeIsRemoved: b }); return { Gb: q === n}
    } a.c = {}; a.z = function (b, c) { c ? (a.a.extend(this, c), this.$parentContext = c, this.$parent = c.$data, this.$parents = (c.$parents || []).slice(0), this.$parents.unshift(this.$parent)) : (this.$parents = [], this.$root = b); this.$data = b }; a.z.prototype.createChildContext = function (b) { return new a.z(b, this) }; a.z.prototype.extend = function (b) { var c = a.a.extend(new a.z, this); return a.a.extend(c, b) }; a.Ra = function (b, c) {
        if (2 == arguments.length) a.a.f.set(b,
"__ko_bindingContext__", c); else return a.a.f.get(b, "__ko_bindingContext__")
    }; a.ya = function (b, c, e) { 1 === b.nodeType && a.e.Ia(b); return d(b, c, e, p) }; a.Ya = function (a, c) { (1 === c.nodeType || 8 === c.nodeType) && b(a, c, p) }; a.xa = function (a, b) { b && (1 !== b.nodeType && 8 !== b.nodeType) && m(Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node")); b = b || window.document.body; c(a, b, p) }; a.ea = function (b) { switch (b.nodeType) { case 1: case 8: var c = a.Ra(b); if (c) return c; if (b.parentNode) return a.ea(b.parentNode) } };
    a.hb = function (b) { return (b = a.ea(b)) ? b.$data : n }; a.b("bindingHandlers", a.c); a.b("applyBindings", a.xa); a.b("applyBindingsToDescendants", a.Ya); a.b("applyBindingsToNode", a.ya); a.b("contextFor", a.ea); a.b("dataFor", a.hb)
})(); a.a.v(["click"], function (b) { a.c[b] = { init: function (c, d, f, g) { return a.c.event.init.call(this, c, function () { var a = {}; a[b] = d(); return a }, f, g) } } }); a.c.event = { init: function (b, c, d, f) {
    var g = c() || {}, e; for (e in g) (function () {
        var g = e; "string" == typeof g && a.a.n(b, g, function (b) {
            var e, i = c()[g]; if (i) {
                var l =
d(); try { var q = a.a.L(arguments); q.unshift(f); e = i.apply(f, q) } finally { e !== p && (b.preventDefault ? b.preventDefault() : b.returnValue = t) } l[g + "Bubble"] === t && (b.cancelBubble = p, b.stopPropagation && b.stopPropagation())
            } 
        })
    })()
} 
}; a.c.submit = { init: function (b, c, d, f) { "function" != typeof c() && m(Error("The value for a submit binding must be a function")); a.a.n(b, "submit", function (a) { var e, d = c(); try { e = d.call(f, b) } finally { e !== p && (a.preventDefault ? a.preventDefault() : a.returnValue = t) } }) } }; a.c.visible = { update: function (b, c) {
    var d =
a.a.d(c()), f = "none" != b.style.display; d && !f ? b.style.display = "" : !d && f && (b.style.display = "none")
} 
}; a.c.enable = { update: function (b, c) { var d = a.a.d(c()); d && b.disabled ? b.removeAttribute("disabled") : !d && !b.disabled && (b.disabled = p) } }; a.c.disable = { update: function (b, c) { a.c.enable.update(b, function () { return !a.a.d(c()) }) } }; a.c.value = { init: function (b, c, d) {
    function f() { var e = c(), f = a.k.r(b); a.g.$(e, d, "value", f, p) } var g = ["change"], e = d().valueUpdate; e && ("string" == typeof e && (e = [e]), a.a.N(g, e), g = a.a.za(g)); if (a.a.ja &&
("input" == b.tagName.toLowerCase() && "text" == b.type && "off" != b.autocomplete && (!b.form || "off" != b.form.autocomplete)) && -1 == a.a.j(g, "propertychange")) { var h = t; a.a.n(b, "propertychange", function () { h = p }); a.a.n(b, "blur", function () { if (h) { h = t; f() } }) } a.a.v(g, function (c) { var e = f; if (a.a.Hb(c, "after")) { e = function () { setTimeout(f, 0) }; c = c.substring(5) } a.a.n(b, c, e) })
}, update: function (b, c) {
    var d = "select" === a.a.o(b), f = a.a.d(c()), g = a.k.r(b), e = f != g; 0 === f && (0 !== g && "0" !== g) && (e = p); e && (g = function () { a.k.S(b, f) }, g(), d && setTimeout(g,
0)); d && 0 < b.length && B(b, f, t)
} 
}; a.c.options = { update: function (b, c, d) {
    "select" !== a.a.o(b) && m(Error("options binding applies only to SELECT elements")); for (var f = 0 == b.length, g = a.a.T(a.a.aa(b.childNodes, function (b) { return b.tagName && "option" === a.a.o(b) && b.selected }), function (b) { return a.k.r(b) || b.innerText || b.textContent }), e = b.scrollTop, h = a.a.d(c()); 0 < b.length; ) a.F(b.options[0]), b.remove(0); if (h) {
        d = d(); "number" != typeof h.length && (h = [h]); if (d.optionsCaption) {
            var j = document.createElement("option"); a.a.Y(j,
d.optionsCaption); a.k.S(j, n); b.appendChild(j)
        } for (var c = 0, k = h.length; c < k; c++) { var j = document.createElement("option"), i = "string" == typeof d.optionsValue ? h[c][d.optionsValue] : h[c], i = a.a.d(i); a.k.S(j, i); var l = d.optionsText, i = "function" == typeof l ? l(h[c]) : "string" == typeof l ? h[c][l] : i; if (i === s || i === n) i = ""; a.a.Qa(j, i); b.appendChild(j) } h = b.getElementsByTagName("option"); c = j = 0; for (k = h.length; c < k; c++) 0 <= a.a.j(g, a.k.r(h[c])) && (a.a.Pa(h[c], p), j++); b.scrollTop = e; f && "value" in d && B(b, a.a.d(d.value), p); a.a.lb(b)
    } 
} 
};
        a.c.options.oa = "__ko.optionValueDomData__"; a.c.selectedOptions = { Ea: function (b) { for (var c = [], b = b.childNodes, d = 0, f = b.length; d < f; d++) { var g = b[d], e = a.a.o(g); "option" == e && g.selected ? c.push(a.k.r(g)) : "optgroup" == e && (g = a.c.selectedOptions.Ea(g), Array.prototype.splice.apply(c, [c.length, 0].concat(g))) } return c }, init: function (b, c, d) { a.a.n(b, "change", function () { var b = c(), g = a.c.selectedOptions.Ea(this); a.g.$(b, d, "value", g) }) }, update: function (b, c) {
            "select" != a.a.o(b) && m(Error("values binding applies only to SELECT elements"));
            var d = a.a.d(c()); if (d && "number" == typeof d.length) for (var f = b.childNodes, g = 0, e = f.length; g < e; g++) { var h = f[g]; "option" === a.a.o(h) && a.a.Pa(h, 0 <= a.a.j(d, a.k.r(h))) } 
        } 
        }; a.c.text = { update: function (b, c) { a.a.Qa(b, c()) } }; a.c.html = { init: function () { return { controlsDescendantBindings: p} }, update: function (b, c) { var d = a.a.d(c()); a.a.Y(b, d) } }; a.c.css = { update: function (b, c) { var d = a.a.d(c() || {}), f; for (f in d) if ("string" == typeof f) { var g = a.a.d(d[f]); a.a.Ua(b, f, g) } } }; a.c.style = { update: function (b, c) {
            var d = a.a.d(c() || {}), f;
            for (f in d) if ("string" == typeof f) { var g = a.a.d(d[f]); b.style[f] = g || "" } 
        } 
        }; a.c.uniqueName = { init: function (b, c) { c() && (b.name = "ko_unique_" + ++a.c.uniqueName.gb, (a.a.tb || a.a.ub) && b.mergeAttributes(document.createElement("<input name='" + b.name + "'/>"), t)) } }; a.c.uniqueName.gb = 0; a.c.checked = { init: function (b, c, d) {
            a.a.n(b, "click", function () {
                var f; if ("checkbox" == b.type) f = b.checked; else if ("radio" == b.type && b.checked) f = b.value; else return; var g = c(); "checkbox" == b.type && a.a.d(g) instanceof Array ? (f = a.a.j(a.a.d(g), b.value),
b.checked && 0 > f ? g.push(b.value) : !b.checked && 0 <= f && g.splice(f, 1)) : a.g.$(g, d, "checked", f, p)
            }); "radio" == b.type && !b.name && a.c.uniqueName.init(b, A(p))
        }, update: function (b, c) { var d = a.a.d(c()); "checkbox" == b.type ? b.checked = d instanceof Array ? 0 <= a.a.j(d, b.value) : d : "radio" == b.type && (b.checked = b.value == d) } 
        }; var F = { "class": "className", "for": "htmlFor" }; a.c.attr = { update: function (b, c) {
            var d = a.a.d(c()) || {}, f; for (f in d) if ("string" == typeof f) {
                var g = a.a.d(d[f]), e = g === t || g === s || g === n; e && b.removeAttribute(f); 8 >= a.a.ja &&
f in F ? (f = F[f], e ? b.removeAttribute(f) : b[f] = g) : e || b.setAttribute(f, g.toString())
            } 
        } 
        }; a.c.hasfocus = { init: function (b, c, d) { function f(b) { var e = c(); a.g.$(e, d, "hasfocus", b, p) } a.a.n(b, "focus", function () { f(p) }); a.a.n(b, "focusin", function () { f(p) }); a.a.n(b, "blur", function () { f(t) }); a.a.n(b, "focusout", function () { f(t) }) }, update: function (b, c) { var d = a.a.d(c()); d ? b.focus() : b.blur(); a.a.va(b, d ? "focusin" : "focusout") } }; a.c["with"] = { p: function (b) { return function () { var c = b(); return { "if": c, data: c, templateEngine: a.q.K} } },
            init: function (b, c) { return a.c.template.init(b, a.c["with"].p(c)) }, update: function (b, c, d, f, g) { return a.c.template.update(b, a.c["with"].p(c), d, f, g) } 
        }; a.g.D["with"] = t; a.e.C["with"] = p; a.c["if"] = { p: function (b) { return function () { return { "if": b(), templateEngine: a.q.K} } }, init: function (b, c) { return a.c.template.init(b, a.c["if"].p(c)) }, update: function (b, c, d, f, g) { return a.c.template.update(b, a.c["if"].p(c), d, f, g) } }; a.g.D["if"] = t; a.e.C["if"] = p; a.c.ifnot = { p: function (b) { return function () { return { ifnot: b(), templateEngine: a.q.K} } },
            init: function (b, c) { return a.c.template.init(b, a.c.ifnot.p(c)) }, update: function (b, c, d, f, g) { return a.c.template.update(b, a.c.ifnot.p(c), d, f, g) } 
        }; a.g.D.ifnot = t; a.e.C.ifnot = p; a.c.foreach = { p: function (b) { return function () { var c = a.a.d(b()); return !c || "number" == typeof c.length ? { foreach: c, templateEngine: a.q.K} : { foreach: c.data, includeDestroyed: c.includeDestroyed, afterAdd: c.afterAdd, beforeRemove: c.beforeRemove, afterRender: c.afterRender, templateEngine: a.q.K} } }, init: function (b, c) { return a.c.template.init(b, a.c.foreach.p(c)) },
            update: function (b, c, d, f, g) { return a.c.template.update(b, a.c.foreach.p(c), d, f, g) } 
        }; a.g.D.foreach = t; a.e.C.foreach = p; a.t = function () { }; a.t.prototype.renderTemplateSource = function () { m(Error("Override renderTemplateSource")) }; a.t.prototype.createJavaScriptEvaluatorBlock = function () { m(Error("Override createJavaScriptEvaluatorBlock")) }; a.t.prototype.makeTemplateSource = function (b, c) {
            if ("string" == typeof b) { var c = c || document, d = c.getElementById(b); d || m(Error("Cannot find template with ID " + b)); return new a.l.i(d) } if (1 ==
b.nodeType || 8 == b.nodeType) return new a.l.M(b); m(Error("Unknown template type: " + b))
        }; a.t.prototype.renderTemplate = function (a, c, d, f) { return this.renderTemplateSource(this.makeTemplateSource(a, f), c, d) }; a.t.prototype.isTemplateRewritten = function (a, c) { return this.allowTemplateRewriting === t || !(c && c != document) && this.V && this.V[a] ? p : this.makeTemplateSource(a, c).data("isRewritten") }; a.t.prototype.rewriteTemplate = function (a, c, d) {
            var f = this.makeTemplateSource(a, d), c = c(f.text()); f.text(c); f.data("isRewritten",
p); !(d && d != document) && "string" == typeof a && (this.V = this.V || {}, this.V[a] = p)
        }; a.b("templateEngine", a.t); a.Z = function () {
            function b(b, c, e) {
                for (var b = a.g.W(b), d = a.g.D, j = 0; j < b.length; j++) { var k = b[j].key; if (d.hasOwnProperty(k)) { var i = d[k]; "function" === typeof i ? (k = i(b[j].value)) && m(Error(k)) : i || m(Error("This template engine does not support the '" + k + "' binding within its templates")) } } b = "ko.templateRewriting.applyMemoizedBindingsToNextSibling(function() {             return (function() { return { " + a.g.ka(b) +
" } })()         })"; return e.createJavaScriptEvaluatorBlock(b) + c
            } var c = /(<[a-z]+\d*(\s+(?!data-bind=)[a-z0-9\-]+(=(\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind=(["'])([\s\S]*?)\5/gi, d = /<\!--\s*ko\b\s*([\s\S]*?)\s*--\>/g; return { mb: function (b, c, e) { c.isTemplateRewritten(b, e) || c.rewriteTemplate(b, function (b) { return a.Z.zb(b, c) }, e) }, zb: function (a, g) { return a.replace(c, function (a, c, d, f, i, l, q) { return b(q, c, g) }).replace(d, function (a, c) { return b(c, "<\!-- ko --\>", g) }) }, Za: function (b) {
                return a.s.na(function (c,
e) { c.nextSibling && a.ya(c.nextSibling, b, e) })
            } 
            }
        } (); a.b("templateRewriting", a.Z); a.b("templateRewriting.applyMemoizedBindingsToNextSibling", a.Z.Za); (function () {
            a.l = {}; a.l.i = function (a) { this.i = a }; a.l.i.prototype.text = function () { var b = a.a.o(this.i), b = "script" === b ? "text" : "textarea" === b ? "value" : "innerHTML"; if (0 == arguments.length) return this.i[b]; var c = arguments[0]; "innerHTML" === b ? a.a.Y(this.i, c) : this.i[b] = c }; a.l.i.prototype.data = function (b) {
                if (1 === arguments.length) return a.a.f.get(this.i, "templateSourceData_" +
b); a.a.f.set(this.i, "templateSourceData_" + b, arguments[1])
            }; a.l.M = function (a) { this.i = a }; a.l.M.prototype = new a.l.i; a.l.M.prototype.text = function () { if (0 == arguments.length) { var b = a.a.f.get(this.i, "__ko_anon_template__") || {}; b.ua === n && b.da && (b.ua = b.da.innerHTML); return b.ua } a.a.f.set(this.i, "__ko_anon_template__", { ua: arguments[0] }) }; a.l.i.prototype.nodes = function () { if (0 == arguments.length) return (a.a.f.get(this.i, "__ko_anon_template__") || {}).da; a.a.f.set(this.i, "__ko_anon_template__", { da: arguments[0] }) };
            a.b("templateSources", a.l); a.b("templateSources.domElement", a.l.i); a.b("templateSources.anonymousTemplate", a.l.M)
        })(); (function () {
            function b(b, c, d) { for (var f, c = a.e.nextSibling(c); b && (f = b) !== c; ) b = a.e.nextSibling(f), (1 === f.nodeType || 8 === f.nodeType) && d(f) } function c(c, d) { if (c.length) { var f = c[0], g = c[c.length - 1]; b(f, g, function (b) { a.xa(d, b) }); b(f, g, function (b) { a.s.Wa(b, [d]) }) } } function d(a) { return a.nodeType ? a : 0 < a.length ? a[0] : s } function f(b, f, j, k, i) {
                var i = i || {}, l = b && d(b), l = l && l.ownerDocument, q = i.templateEngine ||
g; a.Z.mb(j, q, l); j = q.renderTemplate(j, k, i, l); ("number" != typeof j.length || 0 < j.length && "number" != typeof j[0].nodeType) && m(Error("Template engine must return an array of DOM nodes")); l = t; switch (f) { case "replaceChildren": a.e.X(b, j); l = p; break; case "replaceNode": a.a.Na(b, j); l = p; break; case "ignoreTargetNode": break; default: m(Error("Unknown renderMode: " + f)) } l && (c(j, k), i.afterRender && i.afterRender(j, k.$data)); return j
            } var g; a.ra = function (b) {
                b != n && !(b instanceof a.t) && m(Error("templateEngine must inherit from ko.templateEngine"));
                g = b
            }; a.qa = function (b, c, j, k, i) { j = j || {}; (j.templateEngine || g) == n && m(Error("Set a template engine before calling renderTemplate")); i = i || "replaceChildren"; if (k) { var l = d(k); return a.h(function () { var g = c && c instanceof a.z ? c : new a.z(a.a.d(c)), o = "function" == typeof b ? b(g.$data) : b, g = f(k, i, o, g, j); "replaceNode" == i && (k = g, l = d(k)) }, s, { disposeWhen: function () { return !l || !a.a.fa(l) }, disposeWhenNodeIsRemoved: l && "replaceNode" == i ? l.parentNode : l }) } return a.s.na(function (d) { a.qa(b, c, j, d, "replaceNode") }) }; a.Fb = function (b,
d, g, k, i) { function l(a, b) { c(b, o); g.afterRender && g.afterRender(b, a) } function q(c, d) { var h = "function" == typeof b ? b(c) : b; o = i.createChildContext(a.a.d(c)); o.$index = d; return f(s, "ignoreTargetNode", h, o, g) } var o; return a.h(function () { var b = a.a.d(d) || []; "undefined" == typeof b.length && (b = [b]); b = a.a.aa(b, function (b) { return g.includeDestroyed || b === n || b === s || !a.a.d(b._destroy) }); a.a.Oa(k, b, q, g, l) }, s, { disposeWhenNodeIsRemoved: k }) }; a.c.template = { init: function (b, c) {
    var d = a.a.d(c()); if ("string" != typeof d && !d.name &&
(1 == b.nodeType || 8 == b.nodeType)) d = 1 == b.nodeType ? b.childNodes : a.e.childNodes(b), d = a.a.Ab(d), (new a.l.M(b)).nodes(d); return { controlsDescendantBindings: p}
}, update: function (b, c, d, f, g) {
    c = a.a.d(c()); f = p; "string" == typeof c ? d = c : (d = c.name, "if" in c && (f = f && a.a.d(c["if"])), "ifnot" in c && (f = f && !a.a.d(c.ifnot))); var l = s; "object" === typeof c && "foreach" in c ? l = a.Fb(d || b, f && c.foreach || [], c, b, g) : f ? (g = "object" == typeof c && "data" in c ? g.createChildContext(a.a.d(c.data)) : g, l = a.qa(d || b, g, c, b)) : a.e.ha(b); g = l; (c = a.a.f.get(b, "__ko__templateSubscriptionDomDataKey__")) &&
"function" == typeof c.A && c.A(); a.a.f.set(b, "__ko__templateSubscriptionDomDataKey__", g)
} 
}; a.g.D.template = function (b) { b = a.g.W(b); return 1 == b.length && b[0].unknown || a.g.wb(b, "name") ? s : "This template engine does not support anonymous templates nested within its templates" }; a.e.C.template = p
        })(); a.b("setTemplateEngine", a.ra); a.b("renderTemplate", a.qa); (function () {
            a.a.O = function (b, c, d) {
                if (d === n) return a.a.O(b, c, 1) || a.a.O(b, c, 10) || a.a.O(b, c, Number.MAX_VALUE); for (var b = b || [], c = c || [], f = b, g = c, e = [], h = 0; h <= g.length; h++) e[h] =
[]; for (var h = 0, j = Math.min(f.length, d); h <= j; h++) e[0][h] = h; h = 1; for (j = Math.min(g.length, d); h <= j; h++) e[h][0] = h; for (var j = f.length, k, i = g.length, h = 1; h <= j; h++) { k = Math.max(1, h - d); for (var l = Math.min(i, h + d); k <= l; k++) e[k][h] = f[h - 1] === g[k - 1] ? e[k - 1][h - 1] : Math.min(e[k - 1][h] === n ? Number.MAX_VALUE : e[k - 1][h] + 1, e[k][h - 1] === n ? Number.MAX_VALUE : e[k][h - 1] + 1) } d = b.length; f = c.length; g = []; h = e[f][d]; if (h === n) e = s; else {
                    for (; 0 < d || 0 < f; ) {
                        j = e[f][d]; i = 0 < f ? e[f - 1][d] : h + 1; l = 0 < d ? e[f][d - 1] : h + 1; k = 0 < f && 0 < d ? e[f - 1][d - 1] : h + 1; if (i === n || i < j - 1) i =
h + 1; if (l === n || l < j - 1) l = h + 1; k < j - 1 && (k = h + 1); i <= l && i < k ? (g.push({ status: "added", value: c[f - 1] }), f--) : (l < i && l < k ? g.push({ status: "deleted", value: b[d - 1] }) : (g.push({ status: "retained", value: b[d - 1] }), f--), d--)
                    } e = g.reverse()
                } return e
            } 
        })(); a.b("utils.compareArrays", a.a.O); (function () {
            function b(a) { if (2 < a.length) { for (var b = a[0], c = a[a.length - 1], e = [b]; b !== c; ) { b = b.nextSibling; if (!b) return; e.push(b) } Array.prototype.splice.apply(a, [0, a.length].concat(e)) } } function c(c, f, g, e, h) {
                var j = [], c = a.h(function () {
                    var c = f(g, h) ||
[]; 0 < j.length && (b(j), a.a.Na(j, c), e && e(g, c)); j.splice(0, j.length); a.a.N(j, c)
                }, s, { disposeWhenNodeIsRemoved: c, disposeWhen: function () { return 0 == j.length || !a.a.fa(j[0]) } }); return { xb: j, h: c}
            } a.a.Oa = function (d, f, g, e, h) {
                for (var f = f || [], e = e || {}, j = a.a.f.get(d, "setDomNodeChildrenFromArrayMapping_lastMappingResult") === n, k = a.a.f.get(d, "setDomNodeChildrenFromArrayMapping_lastMappingResult") || [], i = a.a.T(k, function (a) { return a.$a }), l = a.a.O(i, f), f = [], q = 0, o = [], v = 0, i = [], u = s, r = 0, w = l.length; r < w; r++) switch (l[r].status) {
                    case "retained": var y =
k[q]; y.qb(v); v = f.push(y); 0 < y.P.length && (u = y.P[y.P.length - 1]); q++; break; case "deleted": k[q].h.A(); b(k[q].P); a.a.v(k[q].P, function (a) { o.push({ element: a, index: r, value: l[r].value }); u = a }); q++; break; case "added": for (var y = l[r].value, x = a.m(v), v = c(d, g, y, h, x), C = v.xb, v = f.push({ $a: l[r].value, P: C, h: v.h, qb: x }), z = 0, B = C.length; z < B; z++) { var D = C[z]; i.push({ element: D, index: r, value: l[r].value }); u == s ? a.e.Ka(d, D) : a.e.Fa(d, D, u); u = D } h && h(y, C, x)
                } a.a.v(o, function (b) { a.F(b.element) }); g = t; if (!j) {
                    if (e.afterAdd) for (r = 0; r < i.length; r++) e.afterAdd(i[r].element,
i[r].index, i[r].value); if (e.beforeRemove) { for (r = 0; r < o.length; r++) e.beforeRemove(o[r].element, o[r].index, o[r].value); g = p } 
                } if (!g && o.length) for (r = 0; r < o.length; r++) e = o[r].element, e.parentNode && e.parentNode.removeChild(e); a.a.f.set(d, "setDomNodeChildrenFromArrayMapping_lastMappingResult", f)
            } 
        })(); a.b("utils.setDomNodeChildrenFromArrayMapping", a.a.Oa); a.q = function () { this.allowTemplateRewriting = t }; a.q.prototype = new a.t; a.q.prototype.renderTemplateSource = function (b) {
            var c = !(9 > a.a.ja) && b.nodes ? b.nodes() : s;
            if (c) return a.a.L(c.cloneNode(p).childNodes); b = b.text(); return a.a.pa(b)
        }; a.q.K = new a.q; a.ra(a.q.K); a.b("nativeTemplateEngine", a.q); (function () {
            a.ma = function () {
                var a = this.vb = function () { if ("undefined" == typeof jQuery || !jQuery.tmpl) return 0; try { if (0 <= jQuery.tmpl.tag.tmpl.open.toString().indexOf("__")) return 2 } catch (a) { } return 1 } (); this.renderTemplateSource = function (b, f, g) {
                    g = g || {}; 2 > a && m(Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.")); var e = b.data("precompiled");
                    e || (e = b.text() || "", e = jQuery.template(s, "{{ko_with $item.koBindingContext}}" + e + "{{/ko_with}}"), b.data("precompiled", e)); b = [f.$data]; f = jQuery.extend({ koBindingContext: f }, g.templateOptions); f = jQuery.tmpl(e, b, f); f.appendTo(document.createElement("div")); jQuery.fragments = {}; return f
                }; this.createJavaScriptEvaluatorBlock = function (a) { return "{{ko_code ((function() { return " + a + " })()) }}" }; this.addTemplate = function (a, b) { document.write("<script type='text/html' id='" + a + "'>" + b + "<\/script>") }; 0 < a && (jQuery.tmpl.tag.ko_code =
{ open: "__.push($1 || '');" }, jQuery.tmpl.tag.ko_with = { open: "with($1) {", close: "} " })
            }; a.ma.prototype = new a.t; var b = new a.ma; 0 < b.vb && a.ra(b); a.b("jqueryTmplTemplateEngine", a.ma)
        })()
    } "function" === typeof require && "object" === typeof exports && "object" === typeof module ? E(module.exports || exports) : "function" === typeof define && define.amd ? define(["exports"], E) : E(window.ko = {}); p;
})(window, document, navigator);
